package com.xd.demo.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.xd.demo.constant.EducationType;
import com.xd.demo.constant.MarriageStatus;
import lombok.Data;


import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @author daishun
 * @since 2019/8/27
 */
@Data
public class IndividualDto implements Serializable {
    /**
     * 姓名
     */
    @NotBlank
    @Size(max = 100)
    private String name;
    /**
     * 身份证号
     */
    @NotBlank
    @Size(min = 18, max = 18)
    private String certNo;
    /**
     * 身份证生效起始日期
     */
    @NotNull
    @JSONField(format = "yyyy-MM-dd")
    private Date certValidFrom;
    /**
     * 身份证生效结束日期
     */
    @NotNull
    @JSONField(format = "yyyy-MM-dd")
    private Date certValidTo;
    /**
     * 手机号
     */
    @NotBlank
    @Size(max = 20)
    @Pattern(regexp = "^([0-9]{11})?$")
    private String mobile;
    /**
     * 生理性别 F / M
     */
    @NotNull
    @Size(max = 1)
    @Pattern(regexp = "^[MF]$", message = "性别只能是M,F")
    private String sex;

    private Date dateOfBirth;
    /**
     * 民族
     */
    @Size(max = 20)
    private String nation;

    private MarriageStatus marriage;

    private EducationType education;

    /**
     * 家庭住址,身份证ocr地址
     */
    @Size(max = 100)
    @NotBlank
    private String homeAddress;

    /**
     * 联系地址
     */
    @Size(max = 100)
    // 自营贷还没有修改, 暂时不作限制
    //   @Pattern(regexp = ".*,.*,.*,.*?", message = "地址不满足格式: 省,市,区,详细地址")
    private String contactAddress;

    /**
     * 电子邮件
     */
    @Size(max = 100)
    private String email;

    /**
     * IP地址
     */
    @Size(max = 63)
    private String ip;

    /**
     * 联系方式
     */
    @Valid
    private List<ContactInfo> contact;
    /**
     * 工作信息
     */
    @Valid
    private WorkInfo workInfo;
}
